Cocos Creator 2.4.5 更新说明
在 Apple M1 芯片推出后,引擎组陆续收到了大家求适配的强烈的需求反馈,我们也在第一时间安排了 M1 芯片的适配,Cocos Creator 3.0 起已支持在 M1 芯片环境运行,v2.4.5 紧随其后,也正式支持了 M1 芯片环境。
上周 Cocos Creator 3.0.1 已经正式发布,v2.4.x 将做为 LTS(长期支持)版本,提供后续两年的持续更新,欢迎大家体验与使用!
What’s New
支持 Apple Silicon (M1) 芯片的运行环境
Bug Fixes
修复 effect 资源有语法错误时,导致内置 effect 加载失败的问题 修复动画编辑器第一次进入,刻度条没有归 0 的问题 修复编辑动画之后,组件上动画顺序变化的问题 [8295] 修复在 onDestroy
中移除常驻节点时报错的问题 [8314]修复火狐浏览器 ScrollView 滚动速度与 Chrome 上不一致的问题 [8306] 修复 iPad 上横屏玩竖屏游戏,SafeArea 错误的问题,感谢大城小胖 [224]
升级提示
在 2021 年,v2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 v2.4 的关键问题修复,保障已上线的游戏平稳运营!因此:
现有的 v2.x 项目可以安心继续开发,无需强制升级 v3.0。 新项目则建议使用 v3.0 开发,我们会不断优化 v3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。
Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。
此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。
以下是升级说明,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。
从 < 2.4.0 版本升级
cc.loader
已经不建议使用,请使用最新的cc.assetManager
来代替,请参考 [资源管理模块升级指南]子包功能已升级为 Asset Bundle,请参考 [资源分包升级指南] 调整了项目构建后的目录结构,调整了 BuildResults
的 API,如果你使用了编辑器插件获取编辑器构建结果,请参考 [定制项目构建流程升级指南]从 1.10 开始废弃的 cc.RawAsset
已被正式移除,请使用cc.Asset
代替。由于 v2.4 不再兼容原有 1.x 项目中对 RawAsset 类型的历史遗留用法,建议所有要升级到 v2.4 的项目特别是从 1.9 版本一路升级上来的项目,先在任意的 1.10 ~ 2.3 版本中对编辑器编译代码时输出的所有警告或报错都正确处理完毕,再升级到 v2.4cc.Color.fromHex
已被废弃,请使用cc.Color.fromHEX
接口
Effect 中的 CCTexture2D
,CCTexture2DRGB
方法已被废弃,请改用CCTexture
,CCTextureRGB
Vec3.FRONT
已被废弃,请改用Vec3.FORWARD
从 < 2.3.0 版本升级
从 2.3.0 开始,定制安卓原生工程时,需注意 Android 与 Android Instant 使用了同一个构建模板。
如果是 Android 平台单独使用的代码请放入 app/src
目录, 单独使用的第三方库请放入app/libs
目录。如果是 Android Instant 单独使用的代码和第三方库请分别放入 game/src
,game/libs
目录。如果是 Android 和 Android Instant 共用的代码和第三方库,请分别放入根目录底下的 src
目录和libs
目录。proj.android-studio
目录下jni/CocosAndroid.mk
和jni/CocosApplication.mk
文件,主要用于引擎相关的配置,建议不要修改。开发者如果需要修改配置请参考以下内容:Android 平台请在 app/jni/Android.mk
和app/jni/Application.mk
中修改;Android Instant 请在 game/jni/Android.mk
和game/jni/Application.mk
中修改。
此外,在 Cocos Creator 编译 Android 时会默认执行 assembleRelease/Debug
,编译 Android Instant 时会执行 instant:assembleRelease/Debug
。
如自定义了音频前后台切换时的暂停逻辑,升级到 v2.3.0 后请移除。
目前 Creator 游戏在所有平台上前后台互相切换时,都会在内部自动暂停和恢复音频。
如果开发者之前有对这一块进行过定制,监听并执行了 cc.audioEngine.pause()/resume()
之类的音频操作,可能会和引擎默认行为冲突。
如果有遇到相关的音频问题,只需移除相应的定制代码即可。
从 2.0 - 2.3.0 版本升级
从 v2.3.0 开始,Canvas 组件不再负责将 Canvas 节点尺寸设为屏幕大小,此行为将结合 Widget 组件实现。为保证兼容性,v2.0 项目升级后,Canvas 所在节点会自动添加 Widget 组件。(从 v1.x 的项目升级无此问题)
从 < 2.2.0 版本升级
从 v2.2.0 开始,我们强化了内存管理机制,现在要求用户通过代码动态创建且独立于场景节点树的 cc.Node
必须通过 destroy()
释放,否则引擎无法知道何时回收这类节点的内存,会导致内存泄露。
如原先手动从场景中移除的节点,在不需要用到的时候也需要统一 destroy()
:// 假设 testNode 是场景中的某个节点,若之前被手动移出场景了,如
testNode.parent = null;
// 或者
testNode.removeFromParent(true);
// 或者
parentNode.removeChild(testNode);
// 若往后 testNode 还会再次用到,则无需手动 destroy 该节点
// 否则应该手动调用
testNode.destroy();
如原先通过 cc.removeSelf
这个 action 销毁节点,请改为使用cc.destroySelf
。如原先通过 cc.NodePool
管理节点,则不受影响。
从 v2.2.0 开始,我们不再建议你使用节点的 Skew 功能。
Skew 通常用作在 2D 引擎中模拟 3D 效果,随着 Cocos Creator 对 3D 节点的深入支持,Skew 效果已经完全可以由 3D 节点来实现。所以为了统一使用体验,进一步优化引擎底层实现,我们废弃了 Skew 属性。
不过我们依旧会保留一段时间内的向下兼容,开发者可在旧项目中延续原有做法。后续我们将进一步完善兼容方式和升级案例,择机正式移除 Skew 功能。
从 < 2.0 版本升级
打开 v1.x 项目的话,场景等所有资源将会自动升级,代码中的废弃接口从 v2.3.3 开始将会在保持兼容的基础上同步输出报错。升级方式可参考 [1.10 资源升级指南] 和 [2.0 升级指南] 进行调整。
参考链接
[资源管理模块升级指南]
https://docs.cocos.com/creator/manual/zh/release-notes/asset-manager-upgrade-guide.html
[资源分包升级指南]
https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
[定制项目构建流程升级指南]
https://docs.cocos.com/creator/manual/zh/release-notes/build-extend-upgrade-guide.html
[1.10 资源升级指南]
https://docs.cocos.com/creator/manual/zh/release-notes/raw-asset-migration.html
[2.0 升级指南]
https://docs.cocos.com/creator/manual/zh/release-notes/upgrade-guide-v2.0.html
往期精彩